package com.networkmanagerj.service.status;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.networkmanagerj.model.Equipamento;

public class EquipamentoStatusFactory {

	private static final Map<String, EquipamentoStatusFactory> INSTANCES = new HashMap<String, EquipamentoStatusFactory>();

	private final Map<Equipamento, EquipamentoStatus> STATUS = new HashMap<Equipamento, EquipamentoStatus>();

	private static EquipamentoStatusFactory getInstance(String puName) {
		EquipamentoStatusFactory factory = INSTANCES.get(puName);
		if (factory == null) {
			factory = new EquipamentoStatusFactory();
			INSTANCES.put(puName, factory);
		}
		return factory;
	}

	public static EquipamentoStatus getEquipamentoStatus(String puName,
			Equipamento equipamento) {
		EquipamentoStatusFactory factory = getInstance(puName);
		return factory.getEquipamentoStatus(equipamento);
	}
	
	public static Collection<EquipamentoStatus> getEquipamentoStatus(String puName) {
		EquipamentoStatusFactory factory = getInstance(puName);
		return factory.getEquipamentoStatus();
	}

	private EquipamentoStatus getEquipamentoStatus(Equipamento equipamento) {
		EquipamentoStatus status = STATUS.get(equipamento);
		if (status == null) {
			status = new EquipamentoStatus(equipamento, false);
			STATUS.put(equipamento, status);
		}
		return status;
	}
	
	public Collection<EquipamentoStatus> getEquipamentoStatus(){
		return STATUS.values();
	}
}
